package scm;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Scm 
{
    public static JFrame frame = null;
    public static JMenuBar mb = null;
    public static JMenu kolor = null;
    public static JDialog d = null;
    public static JLabel dialLab = null;
    public static JButton dialButtOK = null;
    public static InfoWindow iw = null;
    public static RegWindow rw = null;
    public static LogWindow lw = null;
    public static UrlOpener dl= null;
    public static String dokumentacja = "http://www.magnifico.yoyo.pl/doc.pdf";
    public String login = "";
    public static Akcje ac = null;
    public static DodawanieProcedury dp = null;
    public static UsuwanieProcedury up = null;
    public static ModyfikowanieProcedury mp = null;
    public static Monitor monitor = null;

    // komponenty menu
    public static JMenu[] menus = {
                                      new JMenu("Aplikacja"),
                                      new JMenu("Ustawienia"),
                                      new JMenu("Pomoc")
                                  };

    // opcje menu Aplikacja
    public static JMenuItem[] AppItems = {
                                             new JMenuItem("Rejestracja"),
                                             new JMenuItem("Uwierzytelnienie"),
                                             new JMenuItem("Wyloguj"),
                                             new JMenuItem("Koniec")
                                         };

   // opcje menu ustawienia
   public static JMenuItem[] SettingItems = {
                                              new JMenuItem("Dodaj procedurę"),
                                              new JMenuItem("Modyfikuj procedurę"),
                                              new JMenuItem("Usuń procedurę"),
                                              new JMenuItem("Akcje"),
                                              new JMenuItem("Monitor")
                                          };

    // opcje menu Pomoc
    public static JMenuItem[] HelpItems = {
                                              new JMenuItem("Info"),
                                              new JMenuItem("Dokumentacja")
                                          };

    public Scm()
    {
        frame = new JFrame("IT Service Continuity Management");
        frame .setSize(new Dimension(800, 600));
        JFrame.setDefaultLookAndFeelDecorated(true);
        JDialog.setDefaultLookAndFeelDecorated(true);
        frame .setLocation(100,100);
	frame .setLayout(new BorderLayout());
	frame .setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setMenu();
        frame .setVisible(true);
    }

    // ustawia menu
    public void setMenu()
    {
        mb = new JMenuBar();

        // przypisanie listenerów
        signListeners();

        // wstawianie elementów menu
        for (int i = 0; i < menus.length - 1; i++)
            mb.add(menus[i]);

        mb.add(javax.swing.Box.createHorizontalGlue());
        mb.add(menus[2]);

        AppItems[2].setVisible(false);

        // dodajemy opcje menu Aplikacja
        for (int i = 0; i < AppItems.length - 1; i++)
        {
            menus[0].add(AppItems[i]);
        }
        menus[0].add(AppItems[AppItems.length - 1]);

        for (JMenuItem jmi : SettingItems)
        {
            jmi.setVisible(false);
            menus[1].add(jmi);
        }


        // dodajemy opcje menu Pomocy
        for (JMenuItem jmi : HelpItems)
        {
            menus[2].add(jmi);
        }
        frame.setJMenuBar(mb);
    }

    // Action Listener dla opcji -- klasa bezimienna
    public ActionListener al = new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
            String item = ((JMenuItem)e.getSource()).getText();
            if (item.equals("Koniec"))
                System.exit(0);
            else if (item.equals("Info"))
                iw = new InfoWindow(frame);
            else if (item.equals("Dokumentacja"))
                dl = new UrlOpener(dokumentacja);
            else if (item.equals("Rejestracja"))
                rw = new RegWindow();
            else if (item.equals("Dodaj procedurę"))
                dp = new DodawanieProcedury();
            else if (item.equals("Akcje"))                
                ac = new Akcje();
            else if (item.equals("Modyfikuj procedurę"))
                mp = new ModyfikowanieProcedury();
            else if (item.equals("Usuń procedurę"))
                up = new UsuwanieProcedury();
            else if (item.equals("Uwierzytelnienie"))
               loguj();
            else if (item.equals("Monitor"))
               monitor = new Monitor(); // chwilowo wylaczone, bo nie bylo monitora
            else if (item.equals("Wyloguj"))
            {
                login = "";
                AppItems[2].setVisible(false);
                AppItems[1].setVisible(true);
               for (JMenuItem jmi : SettingItems)
               {
                   jmi.setVisible(false);

               }
            }
        }
    };


    public void loguj()
    {
        lw = new LogWindow(this);

    }
    // przypisanie listenera do opcji
    public void signListeners()
    {
        for (JMenuItem jmi : AppItems)
            jmi.addActionListener(al);

        for (JMenuItem jmi : SettingItems)
            jmi.addActionListener(al);

        for (JMenuItem jmi : HelpItems)
            jmi.addActionListener(al);
    }
}
